//
//  GoogleAPIToolBox.h
//  iWeather
//
//  Created by Quan Lam on 11/15/13.
//  Copyright (c) 2013 Vo Thi My Hanh (FSU1.BU19). All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GoogleAPICaller.h"
#import <CoreLocation/CoreLocation.h>
#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>

@protocol GoogleAPIUpdateLocationDelegate
-(void)updateLocationRequestFinished: (NSArray*) locations;
@end

@protocol GoogleAPIReverseGeocodeDelegate
-(void)reverseGeocodeRequestFinished: (GMSReverseGeocodeResponse*) response;
@end

@interface GoogleAPIToolBox : NSObject<GoogleAPIDelegate,CLLocationManagerDelegate> {
}
@property (nonatomic,assign) SEL mySelector;
@property (nonatomic,assign) id myObject;
@property (nonatomic,assign) id myData;
@property (nonatomic,assign) id<GoogleAPIDelegate> myCallerDelegate;
@property (nonatomic,assign) id<GoogleAPIUpdateLocationDelegate> myLocationDelegate;
@property (nonatomic,assign) id<trafficAPIDelegate> myTrafficAPIDelegate;
@property (nonatomic,assign) GoogleAPICaller* myCaller;
@property (nonatomic,assign) GMSGeocoder* myGeocoder;
@property (nonatomic,assign) APIService* myAPIService;
+(GoogleAPIToolBox*) googleAPIToolBox;
+(void)setCallerDelegate: (id<GoogleAPIDelegate>) delegate;
+(void)setMyLocationDelegate: (id<GoogleAPIUpdateLocationDelegate>) delegate;
-(void) directionsAPICallfrom: (NSString*)fromPOI to: (NSString*)toPOI;
- (void)reverseGeocode:(CLLocationCoordinate2D)coordinate withDelegate:(id<GoogleAPIReverseGeocodeDelegate>) object;
-(void)requestAllTrafficDataForDelegate:(id<trafficAPIDelegate>) delegate;
-(void)getCurrentLocation;
@end
